/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * MainJFrame.java
 *
 * Created on 2011.04.20., 19:13:45
 */
package view;

import controller.Controller;
import javax.swing.JOptionPane;

/**
 * Az alkalmazás fő ablaka.
 * @author Kéki
 */
public class MainJFrame extends javax.swing.JFrame {

    private Controller controller;

    /** Creates new form MainJFrame
     * @param con Referenvia a Controller-re
     */
    public MainJFrame(Controller con) {
        controller = con;
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jToolBar1 = new javax.swing.JToolBar();
        playButton = new javax.swing.JButton();
        pauseButton = new javax.swing.JButton();
        stepButton = new javax.swing.JButton();
        resetButton = new javax.swing.JButton();
        vaszonJPanel1 = new view.vaszonJPanel();
        jMenuBar1 = new javax.swing.JMenuBar();
        fileMenu = new javax.swing.JMenu();
        loadButton = new javax.swing.JMenuItem();
        logCheckBox = new javax.swing.JCheckBoxMenuItem();
        kilepesButton = new javax.swing.JMenuItem();
        helpMenu = new javax.swing.JMenu();
        nevjegyButton = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        setTitle("Digitrendszer");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        jToolBar1.setRollover(true);

        playButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/view/buttonImages/playButtonImage.jpg"))); // NOI18N
        playButton.setToolTipText("Mehet");
        playButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        playButton.setFocusable(false);
        playButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        playButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        playButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                playButtonActionPerformed(evt);
            }
        });
        jToolBar1.add(playButton);

        pauseButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/view/buttonImages/pauseButtonImage.jpg"))); // NOI18N
        pauseButton.setToolTipText("Állj");
        pauseButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        pauseButton.setFocusable(false);
        pauseButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        pauseButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        pauseButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                pauseButtonActionPerformed(evt);
            }
        });
        jToolBar1.add(pauseButton);

        stepButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/view/buttonImages/stepButtonImage.jpg"))); // NOI18N
        stepButton.setToolTipText("Léptet");
        stepButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        stepButton.setFocusable(false);
        stepButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        stepButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        stepButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                stepButtonActionPerformed(evt);
            }
        });
        jToolBar1.add(stepButton);

        resetButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/view/buttonImages/stopButtonImage.jpg"))); // NOI18N
        resetButton.setToolTipText("Reset");
        resetButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        resetButton.setFocusable(false);
        resetButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        resetButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        resetButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                resetButtonActionPerformed(evt);
            }
        });
        jToolBar1.add(resetButton);

        vaszonJPanel1.setBackground(new java.awt.Color(255, 255, 255));

        javax.swing.GroupLayout vaszonJPanel1Layout = new javax.swing.GroupLayout(vaszonJPanel1);
        vaszonJPanel1.setLayout(vaszonJPanel1Layout);
        vaszonJPanel1Layout.setHorizontalGroup(
            vaszonJPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 976, Short.MAX_VALUE)
        );
        vaszonJPanel1Layout.setVerticalGroup(
            vaszonJPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 542, Short.MAX_VALUE)
        );

        fileMenu.setText("Fájl");

        loadButton.setText("Betöltés");
        loadButton.setToolTipText("Új hálózat betöltése");
        loadButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        loadButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                loadButtonActionPerformed(evt);
            }
        });
        fileMenu.add(loadButton);

        logCheckBox.setText("Naplózás");
        logCheckBox.setToolTipText("Kimenet fájlba naplózása");
        logCheckBox.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                logCheckBoxItemStateChanged(evt);
            }
        });
        fileMenu.add(logCheckBox);

        kilepesButton.setText("Kilépés");
        kilepesButton.setToolTipText("Kilépés a programból");
        kilepesButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                kilepesButtonActionPerformed(evt);
            }
        });
        fileMenu.add(kilepesButton);

        jMenuBar1.add(fileMenu);

        helpMenu.setText("Súgó");

        nevjegyButton.setText("Névjegy");
        nevjegyButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                nevjegyButtonActionPerformed(evt);
            }
        });
        helpMenu.add(nevjegyButton);

        jMenuBar1.add(helpMenu);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 976, Short.MAX_VALUE)
            .addComponent(vaszonJPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(vaszonJPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    /**
     * A MainJFrame eszköztárán található play gomb eseménykezelése
     */
    private void playButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_playButtonActionPerformed
        // TODO add your handling code here:
        controller.play();
    }//GEN-LAST:event_playButtonActionPerformed

     /**
     * A MainJFrame menüjében talátlható betöltés gomb eseménykezelése
     */
    private void loadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadButtonActionPerformed
        // TODO add your handling code here:
        controller.loadXML();
    }//GEN-LAST:event_loadButtonActionPerformed

    /**
     * A MainJFrame eszköztárán található reset gomb eseménykezelése
     */
    private void resetButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resetButtonActionPerformed
        // TODO add your handling code here:
        controller.reset();
    }//GEN-LAST:event_resetButtonActionPerformed

    /**
     * A MainJFrame eszköztárán található step gomb eseménykezelése
     */
    private void stepButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_stepButtonActionPerformed
        // TODO add your handling code here:
        controller.step();
    }//GEN-LAST:event_stepButtonActionPerformed

     /**
     * A MainJFrame menüjében található kilépés gomb eseménykezelése
     */
    private void kilepesButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_kilepesButtonActionPerformed
        // TODO add your handling code here:
        controller.exit();
    }//GEN-LAST:event_kilepesButtonActionPerformed

    /**
     * A MainJFrame eszköztárán található pause gomb eseménykezelése
     */
    private void pauseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pauseButtonActionPerformed
        // TODO add your handling code here:
        controller.pause();
    }//GEN-LAST:event_pauseButtonActionPerformed

    /**
     * A MainJFrame menüjéből erlérhető névjegy gomb ereménykezelése és a névjegy megjelenítése.
     */
    private void nevjegyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nevjegyButtonActionPerformed
        // TODO add your handling code here:
        JOptionPane.showMessageDialog(this,
                "Digitális rendszert modellező szoftver\n"
                + "\n"
                + "Készült a BME-Szoftverlabor 4 nevű tárgy keretein belül.\n"
                + "\n"
                + "Készítették:\n"
                + "              Csikota Balázs\n"
                + "              Benkő Dániel\n"
                + "              Kékesi Péter\n"
                + "              Kovács Ádám\n"
                + "              Kovács Gergő\n"
                + "\n"
                + "                                   Brute Force - 2011",
                "A program névjegye",
                JOptionPane.PLAIN_MESSAGE);
    }//GEN-LAST:event_nevjegyButtonActionPerformed

    /**
     * A MainJFrame menüjében található naplózás-t be illetve kikapcsoló checkbox eseménykezelője
     */
    private void logCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_logCheckBoxItemStateChanged
        // TODO add your handling code here:
        controller.setLogFile(logCheckBox);                                     //Át kell adnom a "logCheckBox" referenciáját, mert ha nem sikerült a naplófájl beállítása,
                                                                                //ki kell tudnom venni a pipát a checkBox-ból.
    }//GEN-LAST:event_logCheckBoxItemStateChanged

    /**
     * A MainJFrame ablak bezárás ereményének kezelése
     */
    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        // TODO add your handling code here:
        controller.exit();
    }//GEN-LAST:event_formWindowClosing

//    //Azt hiszem ez a megoldás Balázs kívánságára:) Majd ha eljutun odáig, hogy ezzel szöszöljünk kipróbáljuk.
//    //        try {
//    //            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
//    //        } catch (Exception evt) {
//    //        }
//
//    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenu fileMenu;
    private javax.swing.JMenu helpMenu;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JToolBar jToolBar1;
    private javax.swing.JMenuItem kilepesButton;
    private javax.swing.JMenuItem loadButton;
    private javax.swing.JCheckBoxMenuItem logCheckBox;
    private javax.swing.JMenuItem nevjegyButton;
    private javax.swing.JButton pauseButton;
    private javax.swing.JButton playButton;
    private javax.swing.JButton resetButton;
    private javax.swing.JButton stepButton;
    private view.vaszonJPanel vaszonJPanel1;
    // End of variables declaration//GEN-END:variables
    /**
     * A MainJFrame View refenreciájának beállítása
     * @param view A beállítandó View referencia
     */
    public void setView(View view){
        vaszonJPanel1.setView(view);
    }
}
